﻿using System;
using System.Web;
using System.Web.Mvc;
using System.Web.Script.Serialization;

namespace Central.Linq.MvcJson.Engine {

	public class JsonQueryParamsBinder : IModelBinder {

		public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
			if (bindingContext == null) throw new ArgumentNullException("bindingContext");

			string ttt = HttpContext.Current.Request.QueryString["queryParams"];
			if (ttt != null) {
				var manager = new JavaScriptSerializer().Deserialize<JsonQueryParams>(HttpUtility.UrlDecode(ttt));
				if (manager != null) {
					return manager;
				}
			}
			return null;
		}

		//private static T FromPostedData<T>(ModelBindingContext context, String id) {
		//	if (String.IsNullOrEmpty(id)) return default(T);

		//	// попытка получить коллекцию и любого из доступных input'ов
		//	string key = String.Format("{0}.{1}", context.ModelName, id);

		//	ValueProviderResult result = context.ValueProvider.GetValue(key);
		//	if (result == null && context.FallbackToEmptyPrefix) {
		//		// сначала без префиксов
		//		result = context.ValueProvider.GetValue(id);
		//		if (result == null)
		//			return default(T);
		//	}
		//	context.ModelState.SetModelValue(id, result);
		//	T valueToReturn = default(T);
		//	try {
		//		valueToReturn = (T)result.ConvertTo(typeof(T));
		//	}
		//	catch {
		//	}
		//	return valueToReturn;
		//}
	}
}